home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-08-31 | 1.2 KB | 58 lines | [TEXT/MPS ] |
- UNIT Ext4D_SwapMMU;
-
- {$IFC Undefined THINK_PASCAL }
- {$D- }
- {$R- }
- {$ENDC }
-
- INTERFACE
-
- {$IFC Undefined THINK_PASCAL }
- Uses MemTypes,
- Memory,
- QuickDraw,
- OSIntf,
- ToolIntf,
- PackIntf,
- OSUtils;
- {$ENDC}
-
- {$IFC Undefined THINK_PASCAL }
- {$D+ }
- {$R- }
- {$ENDC }
-
- PROCEDURE GrabMemory(VAR FromAddr:LongInt;VAR Result:Str255);
-
- IMPLEMENTATION
-
- PROCEDURE StripPCAddress;EXTERNAL;
-
- PROCEDURE GrabMemory(VAR FromAddr:LongInt;VAR Result:Str255);
- CONST Max24BitsAddr = 8388608;
- VAR CurMMUMode:SignedByte;
- SrcPtr,DstPtr:Ptr;
- BEGIN
- StripPCAddress; { Remove the flags byte }
- Result[0]:=Chr(128);
- IF FromAddr>=0 THEN
- BEGIN
- IF FromAddr>=Max24BitsAddr THEN
- BEGIN
- SrcPtr:=StripAddress(Ptr(@FromAddr)); { Remove the flags byte }
- DstPtr:=StripAddress(Ptr(@Result)); { Remove the flags byte }
- CurMMUMode:=GetMMUMode;
- IF CurMMUMode=False32b THEN
- BEGIN
- CurMMUMode:=True32b;
- SwapMMUMode(CurMMUMode); { No problem }
- END;
- BlockMove(SrcPtr,DstPtr,128); { No problem }
- IF CurMMUMode=False32b THEN SwapMMUMode(CurMMUMode);
- END
- ELSE BlockMove(Ptr(FromAddr),Ptr(ORD4(@Result)+1),128);
- END
- ELSE Result:='Bad address';
- END;
-
- END.